#ifndef DESTROYERCONFIGURATION_H_
#define DESTROYERCONFIGURATION_H_
#include "RectangularBoatShape.h"
#include "InvalidBoatConfiguration.h"
#include "Dimension.h"

class DestroyerConfiguration {
public:
	DestroyerConfiguration(int);
	virtual ~DestroyerConfiguration();

	static DestroyerConfiguration* createDestroyerConfiguration(int) throw (InvalidBoatConfiguration);

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const = 0;

	int getNumberConfiguration() const;
private:
	int numberConfiguration;
};

class DestroyerConfiguration1 : public DestroyerConfiguration {
public:
	DestroyerConfiguration1();
	virtual ~DestroyerConfiguration1();

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const;
};

class DestroyerConfiguration2 : public DestroyerConfiguration {
public:
	DestroyerConfiguration2();
	virtual ~DestroyerConfiguration2();

	virtual RectangularBoatShape* getShape(const string&, const Point<int>&, char) const;
};

#endif
